from flask_restx import Api
from .db import db

api = Api(
  title='Flask Template API',
  version='1.0',
  description='Flask Template API 文档',
  doc='/api/doc',
  prefix='/api'
)


# 初始化api文档
def init_api(app):
  # register_hooks(app, api)
  api.init_app(app)


# 连接数据库， 使用SqlAlchemy(app)创建一个db对象，SqlAlchemy会自动读取app.config中的连接数据库的信息
def init_db(app):
  db.init_app(app)
  """
  ORM模型映射成表的三步
  1.flask db init：这一步之需要执行一次，会在根目录生成一个migrations迁移的文件夹
  2.flask db migrate：识别ORM模型的改变，生成迁移脚本
  3.flask db upgrade：运行迁移脚本， 同步到数据库中
  """
  try:
    with app.app_context():
      # 使用 text() 函数来包装原生 SQL
      from sqlalchemy import text
      with db.engine.connect() as connection:
        result = connection.execute(text("SELECT 1"))
        app.log.info('数据库连接成功')
    print("数据库连接成功")
  except Exception as e:
    app.log.error(f"数据库连接失败: {str(e)}")
  return db
